package com.autorun.server.mapper;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.autorun.server.entity.User;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;

/**
 * 用户Mapper接口
 * 
 * @author autorun
 * @version 1.0.0
 */
@Mapper
public interface UserMapper extends BaseMapper<User> {

    /**
     * 根据用户名查询用户
     * 
     * @param username 用户名
     * @return 用户信息
     */
    @Select("SELECT id, username, password, number, is_admin, create_time, update_time FROM users WHERE username = #{username}")
    User findByUsername(@Param("username") String username);

    /**
     * 检查用户名是否存在
     * 
     * @param username 用户名
     * @return 用户数量
     */
    @Select("SELECT COUNT(*) FROM users WHERE username = #{username}")
    Integer countByUsername(@Param("username") String username);

    /**
     * 检查用户名是否存在（排除指定用户ID）
     * 
     * @param username 用户名
     * @param userId 排除的用户ID
     * @return 用户数量
     */
    @Select("SELECT COUNT(*) FROM users WHERE username = #{username} AND id != #{userId}")
    Integer countByUsernameExcludeId(@Param("username") String username, @Param("userId") Integer userId);

    /**
     * 检查指定用户名的管理员是否存在
     * 
     * @param username 用户名
     * @param isAdmin 是否为管理员
     * @return 用户数量
     */
    @Select("SELECT COUNT(*) FROM users WHERE username = #{username} AND is_admin = #{isAdmin}")
    Integer countByUsernameAndIsAdmin(@Param("username") String username, @Param("isAdmin") Boolean isAdmin);
}